package com.ruike.alisurface.ui.adv;

import android.content.Context;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.ruike.alisurface.Constant;
import com.ruike.alisurface.R;
import com.ruike.alisurface.base.BaseFgt;
import com.ruike.alisurface.bean.AdvBean;
import com.ruike.alisurface.utils.FinalDbUtils;
import com.voodoo.lib_logcat.L;
import com.voodoo.lib_utils.FileUtils;
import com.voodoo.lib_utils.SharedUtils;
import com.voodoo.lib_utils.imageLoader.GlideImageLoader;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.Transformer;
import com.youth.banner.loader.ImageLoader;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.OnClick;

/**
 * Author：voodoo
 * CreateTime：2021/06/17 017 上午 10:33
 * Description：轮播图Fragment
 */
public class ImageAdvFragment extends BaseFgt {

    @BindView(R.id.adv_image_banner)
    Banner banner;
    @BindView(R.id.adv_noAdv_tv)
    TextView noAdvTv;

    @Override
    protected int getLayoutResId() {
        return R.layout.fragment_adv_show;
    }

    @Override
    protected void initViews() {
        banner.setVisibility(View.VISIBLE);
    }

    @Override
    protected void initData() {
        setImageBanner();
    }

    public void setImageBanner() {
        FileUtils.checkFolderIsExists(Constant.FilePath.ADV_IMAGE_FOLDER_PATH, true);

        // 查询数据库，如果库中没有视频广告，那么查询文件夹，如果文件夹中有广告，将其转成对象并存到数据库
        List<AdvBean> list = FinalDbUtils.getInstance().findAllByWhere(AdvBean.class, "isImage=0");
        if (list == null || list.size() <= 0) { // 数据库中没有数据
            // 获取广告文件夹中的文件列表
            File[] folderFileList = FileUtils.getFolderFileList(Constant.FilePath.ADV_IMAGE_FOLDER_PATH);
            if (folderFileList != null && folderFileList.length > 0) {
                list = new ArrayList<>();
                for (File videoFile : folderFileList) {
                    AdvBean advBean = new AdvBean(videoFile.getPath(), videoFile.getName(), 0);
                    list.add(advBean);
                    FinalDbUtils.getInstance().save(advBean);
                }
            }
        }

        if (list == null || list.size() <= 0) { // 最终如果数据集没有数据，那么就直接返回
            noAdvTv.setVisibility(View.VISIBLE);
            return;
        }

        L.i("读取到的广告图片文件列表：" + list.toString());

        // 设置banner样式 不显示指示器和标题
        banner.setBannerStyle(BannerConfig.NOT_INDICATOR);
        // 设置图片加载器
        banner.setImageLoader(new MyImageLoader());
        // 设置图片集合
        banner.setImages(list);
        // 设置banner动画效果
        banner.setBannerAnimation(Transformer.Default);
        // 设置自动轮播，默认为true
        banner.isAutoPlay(true);
        // 设置轮播时间
        int delayTime = SharedUtils.getInstance().getInt(Constant.SharedKey.ADV_IMAGE_DELAY_TIME_MS, Constant.DefultData.ADV_IMAGE_DELAY_TIME_MS);
        banner.setDelayTime(delayTime);
        // banner设置方法全部调用完毕时最后调用
        banner.start();

    }

    @OnClick({R.id.adv_startPay_tv})
    @Override
    public void onClick(View view) {
        super.onClick(view);
        switch (view.getId()) {
            case R.id.adv_startPay_tv:
                ((Adv_Aty) getActivity()).jumpToProductListActivity();
                break;
        }
    }

    public class MyImageLoader extends ImageLoader {
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            imageView.setScaleType(ImageView.ScaleType.FIT_XY); // XY轴拉伸铺满
            // imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); // 中心缩放等比例加载
            GlideImageLoader.getInstance().loadImage(context, ((AdvBean) path).getFilePath(), imageView);
        }
    }


}
